Computer programs are lists of instructions that describe actions to be performed by a computer or processor-based device. When a computer program is loaded and executed on computer hardware, the computer will behave in a predetermined manner by following the instructions of the computer program. Accordingly, the computer becomes a specialized machine that performs the tasks prescribed by the instructions. A programmer using a programming language creates the instructions comprising a computer program. As computer programs became more sophisticated, programming languages have evolved from low-level machine code languages, easily understood by computers, to high-level source code languages more readily comprehensible to humans.
Programming languages are typically classified into categories based upon the characteristics and features of the language. For example, C is often described as a procedural programming language as it is based upon the concept of modularity and scope of program code. C# and Java are object-oriented programming languages tuned to the creation and manipulation of program code as object classes. Data-oriented languages including SQL (Structured Query Language) and XPath are drawn toward search and manipulation of stored data such as relational or XML (Extensible Markup Language) data. As a consequence of this specialization, individual programming languages have particular strengths and weaknesses.
Programmers today often prefer developing a computer program in a specific language with which they have extensive experience or is most appropriate for a large portion of a project. However, programmers appreciate the specialization among programming languages and would like to utilize the best language for particular tasks. For instance, a C# programmer may wish to interface with a relational database using SQL, thus benefiting from the data-oriented aspects and efficiencies of SQL. One way to accomplish this could be to translate a C# query expression into a SQL query expression. Integration of programming languages requires a semantic translation from a first language to a second language. This ensures the meaning of all programmatic statements, expressions and the like specified in the first language are translated to the syntax of the second language that has the same meaning specified by the first language. Often this involves a very different syntax as well as many data conversions to preserve the first language semantics.